﻿package net.wangit;

import java.util.Map;

import net.wangit.context.ActionContext;


/**
 * 单元对象
 * 
 * @author watson Feb 24, 2010
 */
public interface Unit {
	// 加入元素，放置在最后。
	public abstract void addElement(Element element);

	// 在指定位置加入元素。
	public abstract void addElement(int i, Element element);

	// 单元模板参数值对象，可用来设置模板中自定义变量的值，设置方式：Map.put(变量名,变量值)。
	public abstract Map<String, String> getAttributes();

	// 取得单元数据。
	public abstract MapList getData();

	// 取得单元所属的域。
	public abstract String getDomain();

	// 取得指定元素对象。
	public abstract Element getElement(int i);

	// 取得指定元素对象。
	public abstract Element getElement(String s);

	// 取得单元编号。
	public abstract String getId();

	// 取得单元所属的Page对象。
	public abstract Page getPage();

	// 取得单元显示模式。
	public abstract String getShowMode();

	// 取得合计表达式
	public abstract String getSumConfig();

	// 取得标题。
	public abstract String getTitle();

	// 取得标题区的样式
	public abstract String getTitleCss();

	// 取得操作区的样式
	public abstract String getToolbarCss();

	// 取得是否启用交替行
	public abstract boolean isRowsConfigEnabled();

	// 是否显示标题。
	public abstract boolean isShowTitle();

	// 删除指定元素
	public abstract void removeElement(int i);

	// 删除指定元素
	public abstract void removeElement(String s);

	// 删除指定组的所有元素。
	public abstract void removeGroup(String s);

	// 设置点击某行时是否标记行（仅对列表单元有效，对应的CSS样式名为RS）。
	public abstract void setClickMark(boolean flag);

	// 设置列配置，格式“CSS,宽度,列数;CSS,宽度,列数;...”
	public abstract void setColsConfig(String s);

	// 设置列数。
	public abstract void setColumn(int i);

	// 设置内容。
	public abstract void setContent(String s);

	// 设置单元数据。
	public abstract void setData(MapList maplist);

	// 设置高度。
	public abstract void setHeight(int i);

	// 设置高度模式。
	public abstract void setHeightMode(int i);

	// 设置选择模式（仅对列表单元有效）。
	public abstract void setListSelectMode(int i);

	// 设置每页行数（仅对列表单元有效）。
	public abstract void setListSize(int i);

	// 设置移动到某行时是否标记行（仅对列表单元有效，对应的CSS样式名为RO）。
	public abstract void setMoveMark(boolean flag);

	// 设置列表的行合并。
	public abstract void setRowCombine(String s);

	// 设置行所属TR的样式名称。
	public abstract void setRowCss(int i, String s);

	// 设置行配置，格式“css1,css2,css3...”
	public abstract void setRowsConfig(String s);

	// 设置是否启用交替行
	public abstract void setRowsConfigEnabled(boolean flag);

	// 设置是否显示<TD>边框。
	public abstract void setShowCellBorder(boolean flag);

	// 设置是否显示表格区边框。
	public abstract void setShowGridBorder(boolean flag);

	// 设置是否显示标题行（仅对列表单元有效）。
	public abstract void setShowListHead(boolean flag);

	// 设置是否显示行序号（仅对列表单元有效）。
	public abstract void setShowListIndex(boolean flag);

	// 设置单元显示模式。
	public abstract void setShowMode(String s);

	// 设置是否显示标题。
	public abstract void setShowTitle(boolean flag);

	// 设置是否显示操作区边框。
	public abstract void setShowTitleBorder(boolean flag);

	// 设置是否显示单元边框。
	public abstract void setShowUnitBorder(boolean flag);

	// 设置合计表达式
	public abstract void setSumConfig(String s);

	// 设置单元是否可隐藏/显示
	public abstract void setSwitchable(boolean flag);

	// 设置<TABLE>属性。
	public abstract void setTableAttribute(String s);

	// 设置模板路径，此路径相对于“{home}/template/”。
	public abstract void setTemplate(String s);

	// 设置标题。
	public abstract void setTitle(String s);

	// 设置标题区的样式
	public abstract void setTitleCss(String s);

	// 设置操作区的样式
	public abstract void setToolbarCss(String s);

	// 设置宽度。
	public abstract void setWidth(int i);

	// 设置宽度模式。
	public abstract void setWidthMode(int i);

	// 取得元素数量。
	public abstract int size();

	// 将Unit对象转换为HTML字符串。
	public abstract String write(ActionContext actioncontext) throws Exception;
}
